package com.demo.composite10;

import java.util.ArrayList;
import java.util.List;

/**
 * 然后是文件夹类：Folder.java，该类包含对文件的增加、删除和浏览三个方法
 *
 * Composite：容器对象，定义有枝节点行为，用来存储子部件，在Component接口中实现与子部件有关操作，
 * 如增加(add)和删除(remove)等。
 *
 * 从模式结构中我们看出了叶子节点和容器对象都实现Component接口（File），这也是能够将叶子对象和容器对象一致对待的关键所在。
 */
public class Folder extends File{
    private final List<File> files;
    
    public Folder(String name){
        super(name);
        files = new ArrayList<File>();
    }
    
    /**
     * 浏览文件夹中的文件
     */
    @Override
    public void display() {
        for(File file : files){
            file.display();
        }
    }
    
    /**
     * @desc 向文件夹中添加文件
     * @param file
     * @return void
     */
    public void add(File file){
        files.add(file);
    }
    
    /**
     * @desc 从文件夹中删除文件
     * @param file
     * @return void
     */
    public void remove(File file){
        files.remove(file);
    }
}